package com.cn.wanxi.IO;

import com.cn.wanxi.dto.NavDto;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.util.WriteNote;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 1.存入记事本
 * 2.从记事本里面取出
 * 3.封装
 */
public class NavIO {
    private String path = "E:\\wanxi\\step-three\\nav.txt";

    public NavIO() {
        writeNav();
    }

    private void writeNav() {
        File file = new File(path);//给记事本提供一个文件路径
        try {
            OutputStream outputStream = new FileOutputStream(file);//创建输出流
            NavModel navModel = new NavModel();
            outputStream.write(Arrays.toString(navModel.getHrefs()).getBytes());
            outputStream.write("@@".getBytes());
            outputStream.write(Arrays.toString(navModel.getNames()).getBytes());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//    public static void main(String[] args) {
//        new NavIO().getList();
//    }


    /**
     * 封装导航数据
     *
     * @return
     */
    public List<NavDto> getList() {
        String navs = WriteNote.getModelString(path);//将导航数据读取出来
        String[] navStrings = navs.split("@@");//通过split转换成数组
        //现在navStrings里面是两个字符串
//        需要将字符串转换为数组
//        for (String aa : navStrings) {
//            System.out.println(aa);
//        }
        String href = navStrings[0];
//        href = href.substring(1, href.length() - 1);
        String name = navStrings[1];
        href = href.replace("[", "").replace("]", "");
//        href=href.replace("]","");
        name = name.substring(1, name.length() - 1);
        String[] hrefs = href.split(",");
        String[] names = name.split(",");
//        需要将每一个字符串前后的中括号去掉
        List<NavDto> list = new ArrayList<>();
        for (int i = 0; i < hrefs.length; i++) {
            NavDto navDto = new NavDto();//创建导航对象
            navDto.setHref(hrefs[i]);//将链接赋值给对象
            navDto.setName(names[i]);//将名称赋值给对象
            list.add(navDto);//将导航加入到list集合
        }
        return list;
    }
}
